package org.monte.previo2.base;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class base extends SQLiteOpenHelper{

	public base(Context context) {
		super(context,"previo", null, 1);
	    Log.e("Contructor","Estamos en el contructor");
	}

	@Override
	public synchronized SQLiteDatabase getWritableDatabase() {
		SQLiteDatabase db= super.getWritableDatabase();
	    db.execSQL("PRAGMA foreign_keys = ON;");
		return  db;
	}
	
		
	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		Log.e("oncreate","Estamos en el oncreate");
		//crearAplicaciones(db);
		
			
				
		tablamain(db);
		crearEncuestas(db);	
		crearTipos(db);
		crearImagenes(db);		
		
	}
	

	
	
	private void crearAplicaciones(SQLiteDatabase db) {
		
		db.execSQL("CREATE TABLE aplicaciones ("+
				"idAplicacion INTEGER PRIMARY KEY AUTOINCREMENT, "+
				"referencia TEXT, direccion TEXT," +
				"carpetaDrop TEXT,cliente TEXT);");
		Log.e("oncreate","creamos tabla app");
		
	}
	
	
	private void crearTipos(SQLiteDatabase db) {
		
		db.execSQL("CREATE TABLE tipos ("+
				"idTipo INTEGER PRIMARY KEY AUTOINCREMENT, "+
				"descripcion TEXT);");		
		
		
		  ContentValues values = new ContentValues();			
		  values.put("descripcion", "Incidencia");
		  db.insert("tipos", null, values);
		
		  values = new ContentValues();			
		  values.put("descripcion", "Thumbail");
		  db.insert("tipos", null, values);
		  
		  values = new ContentValues();			
		  values.put("descripcion", "Normal");
		  db.insert("tipos", null, values);
		Log.e("oncreate","creamos tipos");
	}
	
	
	private void crearImagenes(SQLiteDatabase db) {
		
		db.execSQL("CREATE TABLE Imagenes ("+
				"idImagen INTEGER PRIMARY KEY AUTOINCREMENT, "+
				"idTipo INTEGER, nombre TEXT," +
				"url TEXT,comentario TEXT,enviada TINYINT,idAplicacion INTEGER," +
				"FOREIGN KEY(idTipo) REFERENCES tipos(idTipo),FOREIGN KEY(idAplicacion) REFERENCES Aplicaciones(idAplicacion));");	
		
		Log.e("oncreate","creamos iamgenes");
	}
	

    private void tablamain(SQLiteDatabase db) {
		
		db.execSQL("CREATE TABLE main ("+
				"Fecha TEXT,Sincronizada TINYINT);");	
		
		  ContentValues values = new ContentValues();			
			  values.put("Fecha", "00/00/00");
			  values.put("Sincronizada", "1"); 
		  db.insert("main", null, values);
		  
		
		Log.e("oncreate","creamos iamgenes");
	}
	
    
     private void crearEncuestas(SQLiteDatabase db) {
		
								
		db.execSQL("CREATE TABLE `Previos` ("+
				"`idPrevio` bigint NOT NULL,"+
				"`Referencia` varchar(15) NULL,"+
				"`Pedimento` varchar(10) NULL,"+
				"`Contenedor` varchar(20) NULL,"+
				"`TipoContenedor` varchar(20) NULL,"+
				"`BL` varchar(20) NULL,"+
				"`Mercancia` varchar(150) NULL,"+
				"`SellosOrigen` varchar(80) NULL,"+
				"`Operadora` varchar(80) NULL,"+
				"`Buque` varchar(80) NULL,"+
				"`Facturas` varchar(80) NULL,"+
				"`Proveedor` varchar(150) NULL,"+
				"`Pais` varchar(20) NULL,"+
				"`Cajas` int NULL,"+
				"PRIMARY KEY (`idPrevio`));");
		
		
		
		db.execSQL("CREATE TABLE Clientes ("+
			"idCliente int NOT NULL,"+
			"Empresa int NULL,"+
			"Nombre varchar(120) NULL,"+
			"RFC varchar(15) NULL,"+
			"Contacto varchar(120) NULL,"+
			"Domicilio varchar(150) NULL,"+
			"Estado smallint NULL,"+
			"Ciudad smallint NULL,"+
			"Telefono varchar(12) NULL,"+
			"Email varchar(60) NULL,"+
			"Latitude float NULL,"+
			"Longitude float NULL,"+
			"CarpetaImagenes varchar(150) NULL,"+
			"Activo smallint NULL,"+
			"PRIMARY KEY (idCliente))");
		
		db.execSQL("CREATE TABLE  Encuesta ("+
			"idEncuesta int NOT NULL,"+
			"Estudio int NOT NULL,"+
			"Nombre varchar(250) NULL,"+
			"Responsable int NULL,"+
			"FechaInicio date NULL,"+
			"FechaTermino date NULL,"+
			"Activo smallint NULL,"+
			"PRIMARY KEY (idEncuesta))");
			
		db.execSQL("CREATE TABLE Aplicaciones ("+
				"idAplicacion bigint NOT NULL,"+
				"idDispositivo int NULL,"+
				"idEncuesta int NULL,"+
				"idPrevio int NULL,"+
				"ClienteAplicacion int NULL,"+
				"FechaEstimada datetime NULL,"+
				"FechaAplicacion datetime NULL,"+
				"Estado smallint NULL,"+
				"LatitudeAp float NULL,"+
				"LongitudeAp float NULL,"+
				"TipoValidacion smallint NULL,"+
				"LatitudeGeo float NULL,"+
				"LongitudeGeo float NULL,"+
				"radio integer NULL,"+
				"PRIMARY KEY (idAplicacion),"+						
				"CONSTRAINT fk_Aplicaciones_Encuesta"+
				"	FOREIGN KEY (idEncuesta)"+ 
				"	REFERENCES Encuesta (idEncuesta),"+				
				"CONSTRAINT fk_Aplicaciones_Clientes"+
				"	FOREIGN KEY (ClienteAplicacion)" +
				"	REFERENCES Clientes (idCliente));");
		
		
		db.execSQL("CREATE TABLE Seccion ("+
				"idSeccion int NOT NULL,"+
				"Encuesta int NULL,"+
		 	    "Nombre varchar(250) NULL,"+
				"Encabezado varchar(250) NULL,"+
				"PRIMARY KEY (idSeccion),"+
				"CONSTRAINT fk_Seccion_Encuesta"+ 
				"	FOREIGN KEY (Encuesta) "+
				"	REFERENCES Encuesta (idEncuesta))");				
						
		
		
		db.execSQL("CREATE TABLE  Pregunta ("+
						"idPregunta int NOT NULL,"+
						"Seccion int NOT NULL,"+
						"SubSeccion int NULL,"+
						"TipoPregunta smallint NOT NULL,"+
						"Texto varchar(250) NULL,"+
						"TextoAuxiliar varchar(250) NULL,"+
						"NumeroOpMultiple smallint NULL,"+
						"NumeroOpSeleccionable smallint NULL,"+
						"NumeroFilas smallint NULL,"+
						"Requerida smallint NULL,"+
						"Secuencia smallint NULL,"+
						"Otro tinyint NULL,"+
						"subseccionInfo varchar(250) NULL,"+
						"PRIMARY KEY (idPregunta),"+
						"CONSTRAINT fk_Seccion_Pregunta"+
						"	FOREIGN KEY (Seccion) "+
						"	REFERENCES Seccion (idSeccion));");						
					
		
		
		  db.execSQL("CREATE TABLE Respuestas ("+
				"idAplicacion bigint NOT NULL,"+
				"idPregunta int NOT NULL,"+
				"idOpcion int NULL,"+
				"RespuestaFecha date NULL,"+
				"RespuestaNumero real NULL,"+
				"RespuestaTexto varchar(250) NULL);");
		  
		  		
			db.execSQL("CREATE TABLE  opMultiple (" +
					"idOpcion bigint NOT NULL,"+
					"idPregunta int NOT NULL,"+
					"Texto varchar(150) NULL,"+
					"Secuencia int NULL,"+
					"Otro tinyint null,"+
					"PRIMARY KEY (idOpcion, idPregunta),"+
					"CONSTRAINT fk_opMultiple_Pregunta"+
					"	FOREIGN KEY (idPregunta) "+
					"	REFERENCES Pregunta (idPregunta));");		
			
			
			db.execSQL("CREATE TABLE  Validacion ("+
					"idPregunta int NULL,"+
					"TipoDato smallint(30) NULL,"+
					"Mascara varchar(30) NULL,"+
					"ValorInicial varchar(30) NULL,"+
					"ValorFinal varchar(30) NULL,"+
					"PRIMARY KEY (idPregunta),"+
					"CONSTRAINT fk_Validacion_Pregunta"+
					"	FOREIGN KEY (idPregunta)"+
					"	REFERENCES Pregunta (idPregunta))");
		
		
	}
	
	
	
	

public void EliminarTablas(SQLiteDatabase db,String tabla) {

	db.execSQL("DROP TABLE "+tabla+";");	
	
	Log.e("oncreate","borramos tabla");
}


	
	@Override
	public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
		// TODO Auto-generated method stub
		
	}

	
	
	
	
}
